#pragma once

#include <vector>
#include <map>
#include <vulkan/vulkan.h>

namespace NaturalEngine {

    class Graphics {
    public:
        Graphics();

        ~Graphics();

    private:
        std::vector<const char *> _instanceExtensions;
        VkInstance _instance;
        VkAllocationCallbacks *_allocator;
        VkPhysicalDevice _physicalDevice;
        VkDevice _device;
        VkDebugReportCallbackEXT _debugReport;
        uint32_t _queueFamily;
        VkQueue _queue;
        VkDescriptorPool _descriptorPool;
//        VkSurfaceKHR _surface;
//        VkSwapchainKHR _swapchain;
//        std::vector<VkImage> _swapchainImages;
//        VkFormat _swapchainImageFormat;
//        VkExtent2D _swapchainExtent;
//        std::vector<VkImageView> _swapchainImageViews;
    };
}

